import dayjs from 'dayjs';

/**
 * 格式化日期
 * @param date 日期对象、时间戳或日期字符串
 * @param format 格式化模式，默认为 YYYY-MM-DD HH:mm:ss
 * @returns 格式化后的日期字符串
 */
export const formatDate = (date: Date | string | number, format: string = 'YYYY-MM-DD HH:mm:ss'): string => {
  if (!date) return '';
  return dayjs(date).format(format);
};

/**
 * 获取当前日期时间
 * @param format 格式化模式，默认为 YYYY-MM-DD HH:mm:ss
 * @returns 格式化后的当前日期时间字符串
 */
export const getCurrentDate = (format: string = 'YYYY-MM-DD HH:mm:ss'): string => {
  return dayjs().format(format);
};

/**
 * 计算两个日期之间的差值
 * @param date1 日期1
 * @param date2 日期2
 * @param unit 差值单位，可选值：'day', 'month', 'year', 'hour', 'minute', 'second'
 * @returns 差值
 */
export const dateDiff = (date1: Date | string | number, date2: Date | string | number, unit: 'day' | 'month' | 'year' | 'hour' | 'minute' | 'second' = 'day'): number => {
  return dayjs(date1).diff(dayjs(date2), unit);
};

/**
 * 判断日期是否过期
 * @param date 日期
 * @returns 是否过期
 */
export const isExpired = (date: Date | string | number): boolean => {
  return dayjs(date).isBefore(dayjs());
}; 